package com.bjpowernode.controller;

import com.bjpowernode.entity.TTranRemark;
import com.bjpowernode.query.TranRemarkQuery;
import com.bjpowernode.result.Result;
import com.bjpowernode.service.TranRemarkService;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

/**
 * 交易备注控制器
 * 负责处理交易备注相关的HTTP请求，包括添加、查询、更新和删除操作
 */
@RestController
public class TranRemarkController {

    // 注入交易备注服务层对象，用于调用业务逻辑方法
    @Resource
    private TranRemarkService tranRemarkService;

    /**
     * 添加交易备注
     *
     * @param tranRemarkQuery 包含交易ID和备注信息的请求对象
     * @return 操作结果，成功返回OK，失败返回FAIL
     */
    @PostMapping("/api/tran/remark")
    public Result addCustomerRemarkById(@RequestBody TranRemarkQuery tranRemarkQuery) {
        // 调用服务层方法添加客户备注
        int count = tranRemarkService.addTranRemarkById(tranRemarkQuery);
        // 根据添加结果返回相应的操作结果
        return count > 0 ? Result.OK() : Result.FAIL();
    }

    /**
     * 分页查询交易备注
     *
     * @param id      交易ID
     * @param current 当前页码
     * @return 包含分页信息的交易备注列表
     */
    @GetMapping("/api/tran/remark/{id}")
    public Result getActivities(@PathVariable Integer id, Integer current) {
        PageInfo<TTranRemark> pageInfo = tranRemarkService.getTranRemarkByPage(id, current);
        return Result.OK(pageInfo);
    }

    /**
     * 获取交易备注详情
     *
     * @param id 备注ID
     * @return 交易备注详细信息
     */
    @GetMapping("/api/tran/remark/detail/{id}")
    public Result getTranRemarkDetailById(@PathVariable Integer id) {
        // 调用服务层方法根据ID获取交易记录备注详情
        TTranRemark tTranRemark = tranRemarkService.getTranRemarkDetailById(id);
        // 返回交易记录备注详情
        return Result.OK(tTranRemark);
    }

    /**
     * 更新交易备注
     *
     * @param tranRemarkQuery 包含备注ID和更新信息的请求对象
     * @return 操作结果，成功返回OK，失败返回FAIL
     */
    @PostMapping("/api/tran/remark/edit")
    public Result updateTranRemark(@RequestBody TranRemarkQuery tranRemarkQuery) {
        // 调用服务层方法更新交易记录备注
        int count = tranRemarkService.updateTranRemark(tranRemarkQuery);
        // 根据更新结果返回相应的操作结果
        return count > 0 ? Result.OK() : Result.FAIL();
    }

    /**
     * 删除交易备注
     *
     * @param id 备注ID
     * @return 操作结果，成功返回删除数量，失败返回FAIL
     */
    @DeleteMapping("/api/tran/remark/delete/{id}")
    public Result deleteTranRemarkById(@PathVariable Integer id) {
        // 调用服务层方法根据ID删除交易记录备注
        int count = tranRemarkService.deleteTranRemarkById(id);
        // 根据删除结果返回相应的操作结果
        return count == 1 ? Result.OK(count) : Result.FAIL();
    }
}
